Zach的博客

Emacs Rust环境配置

Rust

Rust是一种注重高效、安全、并行的系统程序语言。它有以下特定:

  • 零开销抽象
  • 转移语义
  • 保证内存安全
  • 没有数据竞争的线程
  • trait泛型
  • 模式匹配
  • 类型推断
  • 极小的运行时
  • 高效的C绑定

Rust是一门有希望代替C++的语言,所以确实值得学习。于是这也就鼓捣了以下emacs下的环境配置。

环境配置

下载Rust

安装官方教程下载即可:

1
curl https://sh.rustup.rs -sSf | sh

Rust的包管理工具Cargo下载的包路径为~/.cargo,所以能直接调用相关命令,我们把它加到环境变量里:

1
export PATH="$HOME/.cargo/bin:$PATH"

还需要注意一点,cargo.io站点设置在国外,国内下载会很慢,所以还是要改一下源。我们就中科大的源就好。
修改$HOME/.cargo/config为:

1
2
3
4
5
[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
replace-with = 'ustc'
[source.ustc]
registry = "git://crates.mirrors.ustc.edu.cn/index"

同时在环境变量里添加:

1
export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static

export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup

rust-mode

rust-modeRustmajor mode,直接M-x package-install rust-mode后将rust-mode加入auto-mode-list中:

1
(setq auto-mode-alist
	  (append
	   '(("\\.rs\\'" . rust-mode))
	   auto-mode-alist))

cargo

cargo.elemacs内使用cargo命令的插件,M-x package-install cargo下载。

配置:

1
(add-hook 'rust-mode-hook 'cargo-minor-mode)

快捷键:

  • C-c C-c C-r:cargo run
  • C-c C-c C-b:cargo build
  • C-c C-c C-t:cargo test

flycheck-rust

flycheck-rust用于语法检查,M-x package-install flycheck-rust

1
(add-hook 'rust-mode-hook #'flycheck-rust-setup)

rust-fmt

代码格式化工具,需要首先安装rustfmt

1
cargo install rustfmt

然后安装插件M-x package-install rustfmt,配置如下:

1
(define-key rust-mode-map (kbd "C-c C-f") #'rust-format-buffer)

可以设置每次保存后自动格式化,但是我觉得不好用:

1
(add-hook 'rust-mode-hook #'rustfmt-enable-on-save)

rust racer

raceremacsRust的代码提示插件,很好使,需要company插件支持,首先下载company

1
M-x package-install company

下载racer

1
cargo install racer

需要Rust的源码以便eldoc可以工作。配置如下:

1
;; rust racer
(setq racer-rust-src-path (expand-file-name "~/rust-1.12.1/src"))
(add-hook 'rust-mode-hook #'racer-mode)
(add-hook 'racer-mode-hook #'eldoc-mode)

(add-hook 'racer-mode-hook #'company-mode)
(define-key rust-mode-map (kbd "TAB") #'company-indent-or-complete-common)
(setq company-tooltip-align-annotations t)

toml-mode

Rust使用TOML文本来配置项目,toml-mode提供对应的语法高亮,直接下载即可:

1
M-x package-install toml-mode

我们也可以在toml-mode中使用company以便有自动补全:

1
(add-hook 'toml-mode-hook 'company-mode)